package com.ruc.deke.dao;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import com.ruc.deke.model.DBRecord;

/**
 * 对RUCDBCOURSE数据库的操作 主要是一些公共类型的操作
 * 
 * @author: cyj
 * @date: 2017年3月31日 下午4:06:09
 */
public interface DBCourseDAO {

	/**
	 * 向数据库插入一条数据
	 * 
	 * @param tableName
	 * @param record
	 * @author: cyj
	 * @return success failed
	 * @date: 2017年3月31日 下午4:18:04
	 */
	public String insert(String tableName, DBRecord record);

	/**
	 * 对数据库查询操作
	 * 
	 * @param sql
	 * @return
	 * @author: cyj
	 * @throws SQLException
	 * @date: 2017年3月31日 下午3:47:28
	 */
	public ArrayList<DBRecord> query(String sql) throws SQLException;

	/**
	 * 实现单值查询操作 该查询实现单值查询，比如符合条件的记录总数、符合条件的某个特定字段值等等
	 * 
	 * @param sql
	 *            查询SQL语句。
	 * @return 以String对象返回的查询结果
	 */
	public String queryOne(Connection conn, String sql) throws SQLException;

	/**
	 * 对数据库查询操作
	 * 
	 * @param sql
	 * @return
	 * @author: cyj
	 * @throws SQLException
	 * @date: 2017年3月31日 下午3:47:28
	 */
	public ArrayList<DBRecord> query(Connection conn, String sql) throws SQLException;

	/**
	 * 实现单值查询操作 该查询实现单值查询，比如符合条件的记录总数、符合条件的某个特定字段值等等
	 * 
	 * @param sql
	 *            查询SQL语句。
	 * @return 以String对象返回的查询结果
	 */
	public String queryOne(String sql) throws SQLException;

	/**
	 * 更改用户的关于某道题的信息
	 * 
	 * @param tableName
	 *            要更新的表名
	 * @param newRecord
	 *            新的记录
	 * @param conditions
	 *            更新的条件
	 * @return
	 * @author: cyj
	 * @date: 2017年4月3日 下午6:45:54
	 */
	public String updateUserExpStatus(Connection conn, String tableName, DBRecord newRecord, DBRecord conditions)
			throws SQLException;

	/**
	 * 插入用户关于某道题的信息
	 * 
	 * @param tableName
	 * @param record
	 * @author: cyj
	 * @return success failed
	 * @date: 2017年4月15日 下午4:18:04
	 */
	public String insertUserExpStatus(Connection conn, String tableName, DBRecord record) throws SQLException;

	/**
	 * 插入用户关于某个module的总成绩
	 * 
	 * @param tableName
	 * @param record
	 * @author: cyj
	 * @return success failed
	 * @date: 2017年4月15日 下午4:18:04
	 */
	public String insertUserModuleScore(Connection conn, String tableName, DBRecord record) throws SQLException;

	public int insertUserFeedback(Connection conn, String tableName, DBRecord record) throws SQLException;

	public int insertUserFeedbacklt(Connection conn, String tableName, DBRecord record) throws SQLException;

	/**
	 * 获取学校名称及编码
	 * 
	 * @return
	 * @author: cyj
	 * @date: 2017年4月4日 上午10:21:01
	 */
	public ArrayList<DBRecord> getUniversities();

	/**
	 * 获取专业名称及编号
	 * 
	 * @return
	 * @author: cyj
	 * @date: 2017年4月4日 上午10:22:41
	 */
	public ArrayList<DBRecord> getMajors();
}
